/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package BD;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JOptionPane;
import javax.xml.crypto.Data;

/**
 *
 * @author CORE
 */
public class Compras extends bd{
  private Integer id_compras    =0;
  private Integer id_fornecedor =0;
  private Integer id_produto    =0;  
  private float   valor         =0;
  private Integer qtd           =0;
  private Date    data;
  private String Descricao = ""; // pesquisa do com o produto
  private produtos produto = new produtos();
  private Fornecedor fornecedor = new Fornecedor();

    public void setDescricao(String Descricao) {
        this.Descricao = Descricao;
    }


    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public produtos getProduto() {
        return produto;
    }

    public void setProduto(produtos produto) {
        this.produto = produto;
    }

    public Fornecedor getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(Fornecedor fornecedor) {
        this.fornecedor = fornecedor;
    } 

    public Integer getId_compras() {
        return id_compras;
    }

    public void setId_compras(Integer id_compras) {
        this.id_compras = id_compras;
    }

    public Integer getId_fornecedor() {
        return id_fornecedor;
    }

    public void setId_fornecedor(Integer id_fornecedor) {
        this.id_fornecedor = id_fornecedor;
    }

    public Integer getId_produto() {
        return id_produto;
    }

    public void setId_produto(Integer id_produto) {
        this.id_produto = id_produto;
    }

    public float getValor() {
        return valor;
    }

    public void setValor(float valor) {
        this.valor = valor;
    }

    public Integer getQtd() {
        return qtd;
    }

    public void setQtd(Integer qtd) {
        this.qtd = qtd;
    }
    
    public boolean incluir() {            
        try {
            if (!estaConectado()) 
                conecta();          
            stmt = getConexao().createStatement();          
           //id_compras, id_fornecedor, id_produto, valor, qtd, data)            
            sql = "INSERT INTO compras (id_compras, id_fornecedor, id_produto, valor, qtd, data)"
                    +"VALUES ((select coalesce(max(id_compras)+1,1) from compras),"
                    +"'"+ Integer.toString(this.getId_fornecedor())+ "', "
                    +"'"+ Integer.toString(this.getId_produto())+ "', "                    
                    +"'"+ Float.toString(this.getValor())+"',"
                    +"'"+ Integer.toString(this.getQtd())+"',"
                    +"'"+"2054-01-07');";            
//            JOptionPane.showMessageDialog(null,sql);
                    
            stmt.executeUpdate(sql);
            stmt.close();            
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }
    }

    public boolean alterar() {
           //id_compras, id_fornecedor, id_produto, id_vendedor, valor, qtd)        
        try {
            if (!estaConectado()) 
                conecta();          

            stmt = getConexao().createStatement();          
            sql = "update compras "+
                  "SET id_fornecedor='"+ Integer.toString(this.getId_fornecedor()) + "', "+
                  "id_produto='"+ Integer.toString(this.getId_produto())+ "', "+
                  "valor='"+ Float.toString(this.getValor())+ "', "+
                  "qtd='"+Integer.toString(this.getQtd())+"'"+
                  " where id_compras='"+ Integer.toString(this.getId_compras())+"';";
            //JOptionPane.showMessageDialog(null, sql);
                   
            stmt.executeUpdate(sql);
            stmt.close();
            //System.out.print(this.sql);
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query altarar compras \n" + objErro.getMessage());
            return false;
        }

    }

    public ResultSet consultar() {
        if (!estaConectado()) {
            conecta();
        }
        try {
            stmt = getConexao().createStatement();
            sql ="SELECT c.*, p.descricao, f.nome "
                +"FROM compras c "
                +"inner join produtos p on (p.id_produtos=c.id_produto)  "
                +"inner join fornecedor f on (f.id_fornecedor=c.id_fornecedor)   "
                +"WHERE 1=1 ";
            
            if (! this.Descricao.equals("") ){
                sql = sql + " AND p.descricao =  '"+this.Descricao+"';";
            }
            //JOptionPane.showMessageDialog(null, sql);
            
            rs = stmt.executeQuery(sql);
            return rs;
            
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return null;
        }
        
    }
    
    public ArrayList<Compras> getItens(){
        ArrayList itens = new ArrayList();
        ArrayList<produtos> listprod = new ArrayList<produtos>();
        ArrayList<Fornecedor> listforn = new ArrayList<Fornecedor>();
        rs = this.consultar();
        try{
           //id_compras, id_fornecedor, id_produto,  valor, qtd,data)            
            while(rs.next()){
                Compras    obj     = new Compras();
                produtos   objprod = new produtos();
                Fornecedor objforn = new Fornecedor();
                
                objprod.setDescricao(rs.getString("descricao"));
                listprod = objprod.getItens();
                
                objforn.setNome(rs.getString("nome"));
                listforn = objforn.getItens();
                
                obj.setProduto(objprod);
                obj.setFornecedor(objforn);
                
                obj.setId_compras(rs.getInt("id_compras"));
                obj.setId_produto(rs.getInt("id_produto"));
                obj.setId_fornecedor(rs.getInt("id_fornecedor"));
                obj.setValor(rs.getFloat("valor"));
                obj.setQtd(rs.getInt("qtd"));
                obj.setData(rs.getDate("data"));
                itens.add(obj);
            }
            stmt.close();
            disconecta();
        }
        catch(SQLException erro){
            msgErro = erro.getMessage();            
            JOptionPane.showMessageDialog(null,"Compras itens"+ msgErro);
        }        
        return itens;
    }
    
    public boolean excluir() {
        if (!estaConectado()) {
            conecta();
        }        
        try {
            stmt = getConexao().createStatement();                      
            sql ="delete from compras "+                  
                 "where id_compras = "+ Integer.toString(this.id_compras);            
            stmt.execute(sql);                        
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível  a Query \n" + objErro.getMessage());
            return false;
        }
            

    } 

    

}
